home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Gamer (Italian) 32
/
PC Gamer IT CD 32 2-2.iso
/
drivers
/
videodrv
/
T9850
/
DRIVER
/
WIN31
/
VESA_AFC.H
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-21
|
14KB
|
229 lines
/**********************************************************************************************
* VESA_AFC.H
* In term of VESA Advanced Feature Connector (VAFC) Software Interface Proposal
* Version: 1.0P
* Revision: 0.09
* Revision date: April 13, 1994
* This header file defines the interface that a VAFC-compliant graphics subsystem
* must supply. It contains the VAFC standard preprocessor definition, type and
* structure definitions, and API messages.
**********************************************************************************************/
#ifndef _VESA_AFC
#define _VESA_AFC
/*** Status codes ***/
#define VAFCERR_NONE 0 /* No errors have occurred */
#define VAFCERR_GENERAL_FAILURE 1 /* General failure */
#define VAFCERR_NOSUPPORT_COLORSPACE 2 /* Color space not supported */
#define VAFCERR_NOSUPPORT_BUSWIDTH 3 /* Bus width configuration not supported */
#define VAFCERR_NOSUPPORT_ESCAPECODE 4 /* Escape code not supported */
#define VAFCERR_NOSUPPORT_CLOCKING 5 /* Clocking mode not supported */
#define VAFCERR_NOSUPPORT_DATAMODE 6 /* Does not support synch/asynch data mode */
#define VAFCERR_NOSUPPORT_OVERLAYKEY 7 /* Graphics subsystem does not support overlay keying -- overlay key ignored */
#define VAFCERR_NOSUPPORT_POSITION 8 /* Graphics subsystem does not support new video position */
#define VAFCERR_NOSUPPORT_EXTENDED_MODE 9 /* The graphics subsystem does not support the VAFC extended mode */
#define VAFCERR_INVALID_OVERLAY_KEY 10 /* The chosen overlay color key is invalid for the current graphics color space format */
#define VAFCERR_INVALID_POSITION 11 /* The chosen window position is invalid */
#define VAFCERR_INVALID_SIZE 12 /* The chosen window size is invalid */
#define VAFCERR_INCOMPLETE_LIST 13 /* The color space format list is incomplete */
#define VAFCERR_INVALID_STRUCTURE 14 /* The passed sturcture's size is invalid for the current graphics color space format */
#define VAFCERR_NOT_WORD_BOUNDARY 15 /* The video position/size is not on a word (16-bit) boundary */
#define VAFCERR_NOT_DWORD_BOUNDARY 16 /* The video position/size is not on a double word boundary */
#define VAFCERR_NOT_QWORD_BOUNDARY 17 /* The video position/size is not on a quad word boundary */
#define VAFCERR_NOT_DQWORD_BOUNDARY 18 /* The video position/size is not on a double-quad word boundary */
#define VAFCERR_MAX_ERRORS 19 /* Number of error codes, for string table manipulation */
/*** Vendor string length ***/
#define MAX_VENDOR_LEN 63 /* Maximum characters in the VESA vendor string */
/*** VAVI Devices ***/
#define VIDEO_INPUT 0x0001 /* Video input device -- UNUSED */
#define GRAPHIC_PORT 0x0002 /* Graphics device -- UNUSED */
#define VIDEO_COMPRESSOR 0x0004 /* Video compressor */
#define VIDEO_DECOMPRESSOR 0x0008 /* Video decompressor -- UNUSED */
#define VAFC_DEVICE 0x0010 /* VAFC device -- ALWAYS use the code !!! */
#define ALL_DEVICES 0xffff /* All VAVI devices -- UNUSED */
/*** Device Capabilities ***/
#define VAFC_SUPPORTS_OVERLAY_KEY 0x00000001 /* Device supports overlay color keying */
#define VAFC_SUPPORTS_OVERLAY_MASKS 0x00000002 /* Device supports overlay masks */
#define VAFC_SUPPORTS_EXTENDED_QUERY 0x00000004 /* Device supports extended mode GET call */
#define VAFC_SUPPORTS_EXTENDED_SETUP 0x00000008 /* Device supports extended mode SET call */
#define VAFC_SUPPORTS_POSITIONING 0x00000010 /* Device supports window positioning */
#define VAFC_SUPPORTS_OEM_API 0x00000020 /* Device has an OEM-specific API */
/*** Alignment flags
* If none of the following is specified, it should be assumed that the VAFC driver and
* device support BYTE alignment.
***/
#define VAFC_SUPPORTS_WORD_ALIGN 0x00000040 /* Device supports word (16-bit) boundary alignment */
#define VAFC_SUPPORTS_DWORD_ALIGN 0x00000080 /* Device supports double word boundary alignment */
#define VAFC_SUPPORTS_QWORD_ALIGN 0x00000100 /* Device supports quad word boundary alignment */
#define VAFC_SUPPORTS_DQWORD_ALIGN 0x00000200 /* Device supports double-quad word boundary alignment */
/*** The following device capabilities mask is used to determine the number of color space
* formats the device supports. This can be used when using the message
* DRV_VAFC_QUERY_COLOR_SPACE.
***/
#define VAFC_COLOR_SPACES_MASK 0xff000000 /* Definition to mask the number of color spaces */
/*** Vendor information block ***/
typedef struct tagVESADEVICECAPS {
unsigned long dwSize; /* Size of this structure */
unsigned long dwStructRevID; /* Structure revison ID = 0x0100 */
char szVendor[MAX_VENDOR_LEN+1]; /* Vendor string -- assigned by individual companies */
unsigned long dwModelID; /* Vendor specific Device ID */
unsigned long dwRevID; /* Vendor specific revison ID */
unsigned short wDeviceType; /* VESA registered device type */
unsigned long dwDeviceCaps; /* Device capabilities field */
unsigned long dwReserved1; /* Unused by VAFC, reserved for VMC usage */
unsigned short wReserved2; /* Unused by VAFC, reserved for VMC usage */
} VESA_DEVICECAPS;
typedef VESA_DEVICECAPS _far *LPVESA_DEVICECAPS;
/*** Graphics information block ***/
typedef struct tagGraphicsInfoBlock {
unsigned long dwSize; /* Size of the structure */
unsigned long dwColorSpace; /* Graphics buffer color space format */
unsigned short wActivePixelWidth; /* Number of active pixels on the screen */
unsigned short wActivePixelHeight; /* Number of active lines on the screen */
unsigned short wTopBorderHeight; /* Number of lines in top border */
unsigned short wBottomBorderHeight; /* Number of lines in bottom border */
unsigned short wLeftBorderHeight; /* Number of lines in the left border */
unsigned short wRightBorderHeight; /* Number of lines in the right border */
unsigned short wHorzSyncPoparity; /* Graphics horizontal sync polarity */
unsigned short wVertSyncPolarity; /* Graphics vertical sync polarity */
unsigned short fInterlaced; /* Interlaced status -- TRUE/FALSE flag */
} VAFCGRAPHICS_INFO;
typedef VAFCGRAPHICS_INFO _far *LPVAFCGRAPHICS_INFO;
/*** Extended mode information block ***/
typedef struct tagExtendedModeInfoBlock {
unsigned long dwSize; /* Size of the structure */
unsigned short wFIFOSize; /* FIFO size, in bytes */
unsigned short wFullLevel; /* Full Level of FIFO, in bytes */
} VAFCEXTENDED_INFO;
typedef VAFCEXTENDED_INFO _far *LPVAFCEXTENDED_INFO;
/*** Setup controls ***/
/*** VAFCESCAPE
* allows vendors who control both side of the interface to define VENDOR SPECIFIC
* parameters. If a parameter ANDed with VAFCESCAPE returns a none-zero result, the
* option is VENDOR SPECIFIC. If the VAFC driver does not support VAFCESCAPE, it should
* return VAFC_NOSUPPORT_ESCAPECODE.
* Vendor specific parameters have to be handled on a vendor-by-vendor basis. To do this,
* it is assumed that the application and/or driver provider will get the necessory VAFC
* vendor-specific interface documents and APIs from the vendor itself.
***/
#define VAFCESCAPE 0x80000000 /* User defined */
/*** The following define the color space formats for data crossing the VAFC connector.
* The default format is VAFCRGB_8_INDEXED. These same definitions are used by the VAFC
* driver to specify the color space format of the graphics buffer in the current graphics
* mode.
***/
#define VAFCRGB_8_INDEXED 0x00000001 /* Standard 8 bits indexed color */
#define VAFCRGB_15A 0x00000002 /* 16 bits aRGB, organized as 1:5:5:5 */
#define VAFCRGB_16 0x00000004 /* 16 bits RGB, organized as 5:6:5 */
#define VAFCRGB_24 0x00000008 /* 24 bits RGB, organized as 8:8:8 */
#define VAFCRGB_32A 0x00000010 /* 32 bits aRGB, organized as 8:8:8:8 */
#define VAFCYUV_422 0x00000020 /* Packed YUV, organized as 4:2:2 */
#define VAFCYUV_444 0x00000040 /* Packed YUV, organized as 4:4:4 */
/*** The following extra color space definitions are provided as base escape code color
* space. Notice, as more color space are defined that they should be ORed with the
* VAFCESCAPE code.
***/
#define VAFCRGB_8 (VAFCESCAPE | 0x00000001) /* 8 bits RGB, organized as 3:3:2 */
#define VAFCYUV_411 (VAFCESCAPE | 0x00000002) /* Packed YUV, organized as 4:1:1 */
#define VAFCRGB_15 (VAFCESCAPE | 0x00000004) /* 16 bits RGB, organized as x:5:5:5 */
/*** The following define the available bus transfer widths avaiable across the VAFC
* connector. The directions of the transfer are explicitly described in the definitions.
* The default or power up state of the H/W is a tri-stated VAFCBUS_8_OUT.
***/
#define VAFCBUS_8_OUT 0x00000001 /* Standard 8-bit data out (from DAC) */
#define VAFCBUS_8_IN 0x00000002 /* Standard 8-bit data out (to DAC) */
#define VAFCBUS_16_OUT 0x00000004 /* 16-bit data out (from DAC) */
#define VAFCBUS_16_IN 0x00000008 /* 16-bit data out (to DAC) */
#define VAFCBUS_32_OUT 0x00000010 /* 32-bit data out (from DAC) */
#define VAFCBUS_32_IN 0x00000020 /* 32-bit data out (to DAC) */
/*** The following define the available clocking modes across the VESA_VAFC bus. The default
* power up state of the connector is 1x clocking mode, VAFCCLOCK_1X.
***/
#define VAFCCLOCK_1X 0x00000001 /* 1X clock mode -- dot clock provided */
#define VAFCCLOCK_2X 0x00000002 /* 2X clock mode -- dot clock / 2 provided */
#define VAFCCLOCK_4X 0x00000004 /* 4X clock mode -- dot clock / 4 provided; for 1280 mode support */
/*** The following define the available data mode across the VAFC connector ***/
#define VAFCDATA_SYNCHRONOUS 0x00000001 /* Synchronous data mode */
#define VAFCDATA_ASYNCHRONOUS 0x00000002 /* Asynchronous data mode */
/*** Preferred setup structure ***/
typedef struct tagPreferredParameters {
unsigned long dwSize; /* Size of the structure */
unsigned long dwColorSpace; /* Color space format */
unsigned short dwBusWidth; /* Bus width */
unsigned short dwClockingMode; /* Clocking mode */
unsigned short dwDataMode; /* Data mode */
} VAFCPREFERRED_PARAMETERS;
typedef VAFCPREFERRED_PARAMETERS _far *LPVAFCPREFERRED_PARAMETERS;
/*** Overlay controls ***/
/*** The values for the four bColorValueN members of the VAFCOVERLAY_CONTROLS structure
* depends on the color space format of the graphics subsystem:
*
* If the graphics is using an 8-bit indexed color space, then the lower eight bits of
* bColorValue0 is the overlay color index. The rest of the variable should be masked
* (value & 0xffffff00).
*
* If the graphics is in a true-color modes, bColorValue0 is the red value, bColorValue1
* is the green value and bColorValue2 is the blue value. If the video color space format
* includes alpha information, then bColorValue3 is the alpha value.
*
* For VAFC devices that support both overlay color keying and overlay masking, the
* bColorValueN member can be used to mask each appropriate component.
*
* NOTE: If the graphics sussystem does not support overlay color keying (it overlay based on
* image size and position) then the VAFC driver should return VAFCERR_NOSUPPORT_OVERLAYKEY
* to signify that the overlay key is ignored.
***/
typedef struct tagVAFCOverlayControls {
unsigned long dwSize; /* Size of the structure */
unsigned char bColorValue0; /* Meaning depends on graphics color space format */
unsigned char bColorValue1; /* Meaning depends on graphics color space format */
unsigned char bColorValue2; /* Meaning depends on graphics color space format */
unsigned char bColorValue3; /* Meaning depends on graphics color space format */
unsigned char bMaskValue0; /* Meaning depends on graphics color space format */
unsigned char bMaskValue1; /* Meaning depends on graphics color space format */
unsigned char bMaskValue2; /* Meaning depends on graphics color space format */
unsigned char bMaskValue3; /* Meaning depends on graphics color space format */
} VAFCOVERLAY_CONTROLS;
typedef VAFCOVERLAY_CONTROLS _far *LPVAFCOVERLAY_CONTROLS;
/*** Interface Messages ***/
#define DRV_VAFC_GET_DEVCAPS DRV_RESERVED
#define DRV_VAFC_GET_COLOR_SPACE DRV_RESERVED + 1
#define DRV_VAFC_SET_COLOR_SPACE DRV_RESERVED + 2
#define DRV_VAFC_GET_BUS_WIDTH DRV_RESERVED + 3
#define DRV_VAFC_SET_BUS_WIDTH DRV_RESERVED + 4
#define DRV_VAFC_GET_DATA_MODE DRV_RESERVED + 5
#define DRV_VAFC_SET_DATA_MODE DRV_RESERVED + 6
#define DRV_VAFC_GET_CLOCK_MODE DRV_RESERVED + 7
#define DRV_VAFC_SET_CLOCK_MODE DRV_RESERVED + 8
#define DRV_VAFC_GET_OVERLAY_COLOR_INFO DRV_RESERVED + 9
#define DRV_VAFC_SET_OVERLAY_COLOR_INFO DRV_RESERVED + 10
#define DRV_VAFC_GET_GRAPHICS_INFO DRV_RESERVED + 11
#define DRV_VAFC_GET_WINDOW_RECT DRV_RESERVED + 12
#define DRV_VAFC_SET_WINDOW_RECT DRV_RESERVED + 13
#define DRV_VAFC_QUERY_COLOR_SPACES DRV_RESERVED + 14
#define DRV_VAFC_GET_EXTENDED_SETUP DRV_RESERVED + 15
#define DRV_VAFC_SET_EXTENDED_SETUP DRV_RESERVED + 16
#define DRV_VAFC_GET_PREFERRED_SETUP DRV_RESERVED + 17
#define DRV_VAFC_GET_ERROR DRV_RESERVED + 18
#define DRV_VAFC_VENDOR_START DRV_RESERVED + 0x1000
#define DRV_VAFC_VENDOR_END DRV_RESERVED + 0x1300
#endif //*** End of standard VESA_AFC definition